package com.spark.invoicings.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

import lombok.Data;

/**
 * 销项发票表
 * 
 * @author sunyan
 * @email sunyan@gmail.com
 * @date 2024-06-13 11:10:42
 */
@Data
@TableName("t_sale_sales_invoice")
public class SalesInvoice implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 销项发票ID
	 */
	@TableId(type = IdType.AUTO)
	private Integer invoiceId;
	/**
	 * 开票状态(1待审批, 2已通过, 3已驳回, 4已作废)
	 */
	private Integer invoiceStatusId;
	/**
	 * 客户ID
	 */
	private Integer customerId;
	/**
	 * 销售订单ID
	 */
	private Integer salesOrderId;
	/**
	 * 发票类型(1专用发票, 2普通发票)
	 */
	private Integer invoiceTypeId;
	/**
	 * 开票金额
	 */
	private double billingAmount;
	/**
	 * 备注
	 */
	private String remark;
	/**
	 * 开票申请人
	 */
	private String billingApplicant;
	/**
	 * 申请日期
	 */
	private Date applicationDate;
	/**
	 * 开票抬头
	 */
	private String billingTitle;
	/**
	 * 开票税号
	 */
	private String billingTaxNumber;
	/**
	 * 开户行
	 */
	private String bankOfDeposit;
	/**
	 * 银行账号
	 */
	private String bankAccount;
	/**
	 * 收票地址
	 */
	private String billingAddress;
	/**
	 * 附件
	 */
	private String attachment;
	/**
	 * 开票日期
	 */
	private Date billingDate;
	/**
	 * 审批人
	 * */
	private String approver;
	/**
	 * 审批时间
	 * */
	private String approvalTime;

	/**
	 * 客户关联对象
	 * */
	@TableField(exist = false)
	private SaleCustomer saleCustomer;

	/**
	 * 销售订单关联对象
	 * */
	@TableField(exist = false)
	private SalesOrder salesOrder;

	/**
	 * 字典数据表关联对象
	 * */
	@TableField(exist = false)
	private List<DictData> dictData;

	public String getApprover() {
		return approver;
	}

	public void setApprover(String approver) {
		this.approver = approver;
	}

	public String getApprovalTime() {
		return approvalTime;
	}

	public void setApprovalTime(String approvalTime) {
		this.approvalTime = approvalTime;
	}

	public Integer getInvoiceId() {
		return invoiceId;
	}

	public void setInvoiceId(Integer invoiceId) {
		this.invoiceId = invoiceId;
	}

	public Integer getInvoiceStatusId() {
		return invoiceStatusId;
	}

	public void setInvoiceStatusId(Integer invoiceStatusId) {
		this.invoiceStatusId = invoiceStatusId;
	}

	public Integer getCustomerId() {
		return customerId;
	}

	public void setCustomerId(Integer customerId) {
		this.customerId = customerId;
	}

	public Integer getSalesOrderId() {
		return salesOrderId;
	}

	public void setSalesOrderId(Integer salesOrderId) {
		this.salesOrderId = salesOrderId;
	}

	public Integer getInvoiceTypeId() {
		return invoiceTypeId;
	}

	public void setInvoiceTypeId(Integer invoiceTypeId) {
		this.invoiceTypeId = invoiceTypeId;
	}

	public double getBillingAmount() {
		return billingAmount;
	}

	public void setBillingAmount(double billingAmount) {
		this.billingAmount = billingAmount;
	}

	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	public String getBillingApplicant() {
		return billingApplicant;
	}

	public void setBillingApplicant(String billingApplicant) {
		this.billingApplicant = billingApplicant;
	}

	public Date getApplicationDate() {
		return applicationDate;
	}

	public void setApplicationDate(Date applicationDate) {
		this.applicationDate = applicationDate;
	}

	public String getBillingTitle() {
		return billingTitle;
	}

	public void setBillingTitle(String billingTitle) {
		this.billingTitle = billingTitle;
	}

	public String getBillingTaxNumber() {
		return billingTaxNumber;
	}

	public void setBillingTaxNumber(String billingTaxNumber) {
		this.billingTaxNumber = billingTaxNumber;
	}

	public String getBankOfDeposit() {
		return bankOfDeposit;
	}

	public void setBankOfDeposit(String bankOfDeposit) {
		this.bankOfDeposit = bankOfDeposit;
	}

	public String getBankAccount() {
		return bankAccount;
	}

	public void setBankAccount(String bankAccount) {
		this.bankAccount = bankAccount;
	}

	public String getBillingAddress() {
		return billingAddress;
	}

	public void setBillingAddress(String billingAddress) {
		this.billingAddress = billingAddress;
	}

	public String getAttachment() {
		return attachment;
	}

	public void setAttachment(String attachment) {
		this.attachment = attachment;
	}

	public Date getBillingDate() {
		return billingDate;
	}

	public void setBillingDate(Date billingDate) {
		this.billingDate = billingDate;
	}

	public SaleCustomer getSaleCustomer() {
		return saleCustomer;
	}

	public void setSaleCustomer(SaleCustomer saleCustomer) {
		this.saleCustomer = saleCustomer;
	}

	public SalesOrder getSalesOrder() {
		return salesOrder;
	}

	public void setSalesOrder(SalesOrder salesOrder) {
		this.salesOrder = salesOrder;
	}

	public List<DictData> getDictData() {
		return dictData;
	}

	public void setDictData(List<DictData> dictData) {
		this.dictData = dictData;
	}
}
